package com.eduadmin.mapper;

import com.eduadmin.entity.Score;
import com.eduadmin.entity.TeachScore;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

@Component
public interface ScoreMapper {
    //（管理员使用）从指定的年级成绩表中返回满足条件的所有记录
    List<Score> getAllScoreByParam(String gradeDatatableName, String semesterName, String examName, String categoryName);

    // （管理员使用）从指定的年级成绩表中返回满足条件的所有记录（降序排列），条件增加了两个：班级名称和学科英文名称。
    List<Score> getTeamCourseScoreByParam(String gradeDatatableName, String semesterName, String examName, String categoryName, String teamName, String courseEnName);

    // （教师使用）：（带分页条件）从指定的年级成绩表中返回满足条件的所有记录。条件：年级数据表名，年级，班级名称，学期，考试，学科。
    //  参数：String gradeDatatableName, String gradeName,String teamName,String semesterName,String examName,String courseEnName
    List<TeachScore> getTeachScoreByParam(Map<String, Object> paraMap);

    // 教师使用：（不带分页条件）从指定的年级成绩表中返回满足条件的所有记录。条件：年级数据表名，年级，班级名称，学期，考试，学科。
    List<TeachScore> getTeachScoreForExportByParam(Map<String, Object> paraMap);

    // 教师使用：从指定的年级成绩表中返回满足条件的所有记录“条数”。条件：年级数据表名，年级，班级名称，学期，考试，学科。
    int getTeachScoreNumberByParam(Map<String, Object> paraMap);

    // （学生使用）：从给定的“年级成绩表名称”中查找到满足（学生身份证号）的所有记录。
    List<Score> getStudentOwnScoreByParam(Map<String, Object> paraMap);

    //hgm 批量导入成绩
    int insertScores(Map<String, Object> maps);

    //hgm 判断学生成绩在库中的唯一性
    Score selectScoreUnique(Map<String, Object> maps);

    //hgm 获取所有
    List<Score> selectAllScores(Map<String, Object> paraMap);

    //hgm 获取总数
    Long selectAllScoreCount(Map<String, Object> paraMap);

    //hgm 获取教师任教成绩
    List<TeachScore> selectTeachScores(Map<String, Object> paraMap);

    //hgm 导出学生成绩
    List<Score> selectQueryStudentScores(Map<String, Object> paraMap);

    //hgm 更新学生成绩
    void updateStudentScore(Map<String, Object> maps);

    //hgm 删除
    long deleteStudentScore(Map<String, String> paraMap);
}